Skip to content

build all targets in CI#1

Merged
aleksisch merged 1 commit into
masterfrom
enable-all-targets
Mar 17, 2025
Merged

build all targets in CI#1
aleksisch merged 1 commit into
masterfrom
enable-all-targets

Conversation

@aleksisch
Copy link
Copy Markdown
Owner

No description provided.

@aleksisch aleksisch merged commit 99a0e35 into master Mar 17, 2025
@aleksisch aleksisch deleted the enable-all-targets branch November 12, 2025 07:54
aleksisch pushed a commit that referenced this pull request Mar 30, 2026
Parse SF2 modulator chunks (pmod/imod) and store on SF2Zone. Full modulator
evaluation per SF2 spec 9.5.3: source extraction (velocity, key, CC, pitch
wheel), transform curves (concave/convex/switch, unipolar/bipolar), two-source
multiplication, absolute value transform. All 10 default modulators from SF2
spec 8.4.1-8.4.10 with zone override logic. Replaces hardcoded velocity curve.

Parsing:
- SF2Modulator struct, parse_modulators for pmod/imod chunks (10 bytes/entry)
- Source unpacking: sf2_mod_src_index/cc/negative/bipolar/type
- Modulators stored on SF2Zone alongside generators

Evaluation:
- sf2_concave/sf2_convex: SF2 spec page 73 transform curves
- sf2_mod_source_value: velocity, key, CC, pitch wheel, pitch wheel sensitivity
- sf2_mod_transform_source: unipolar/bipolar, positive/negative, all 4 map types
- sf2_mod_get_value: amount * transform(src1) * transform(src2), abs transform
- sf2_apply_modulators: accumulate per-generator offsets from zone modulators

Default modulators:
- SF2_DEFAULT_MODS: 10 defaults (vel->atten, vel->filter, pressure->vib, CC1->vib,
  CC7->atten, CC10->pan, CC11->atten, CC91->reverb, CC93->chorus, pitchwheel->tune)
- sf2_mod_identity_match + sf2_apply_default_modulators with override logic
- Removed hardcoded sf2_velocity_attenuation (now handled by default mod #1)

Application in sf2_create_c_voice:
- Compute gen_offsets[64] from zone + global + preset modulators + defaults
- Apply offsets to pitch, filter FC/Q, attenuation, pan, all LFO/env routing

Also: midi_init_reverb() public function for offline rendering with reverb

20 new tests: source unpacking, evaluation (6 cases), parse counts (FluidR3=746,
TimGM6mb=455), voice velocity dynamics, default mod dynamics, override logic

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
aleksisch pushed a commit that referenced this pull request Apr 29, 2026
Fixes 7 review comments in one push:

* MCP stdio safety (#1, #5): read_import and compile_and_collect both
  print warnings/failures to stdout, which corrupts the JSON-RPC
  protocol stream when called from the MCP server. Add `quiet : bool
  = false` to both helpers (default preserves CLI behavior); MCP
  find_duplicates passes true and surfaces failure counts via the
  returned envelope.

* Test portability (#2, #3): replace hard-coded /tmp/... corpus path in
  test_find_duplicates_corpus_not_found with create_temp_file_result +
  immediate remove() — guaranteed-nonexistent path that works on
  Windows runners.

* Newline-delimited paths (#4): MCP do_find_duplicates now normalizes
  \n to , before parse_file_list, matching the README's
  documented "git diff --name-only | …" pipeline use case.

* Project (.das_project) plumbing (#6): add `project` to the
  find_duplicates schema, dispatch, and handler signature; thread
  through to compile_and_collect, which now takes
  `project : string = ""` and uses make_file_access(project) instead of
  the previous hardcoded "" — matching the convention used by
  compile_check / lint / find_symbol.

* Deterministic compile order (#7): both the MCP tool and CLI main.das
  build a sorted array<string> from `keys(against_files)` and iterate
  that, instead of the unspecified-order table-key iteration. Makes
  per-candidate report ordering and --check exit behavior reproducible
  across runs.

Drive-by: PERF006 fix in resolve_against_files (reserve before push
loop).

All test suites still green: 6987 in tests/, 54 find_dupes, 181 MCP
(includes 5 updated find_duplicates tests for new signature). MCP
end-to-end smoke confirms newline-delimited paths and project
parameter both reach the handler.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
aleksisch pushed a commit that referenced this pull request May 5, 2026
PR GaijinEntertainment#2575 review round 3 — three intertwined Option<T> bugs surfaced by Copilot.

1. Generic `sql_bind($Option<auto(TT)>)` fallback in sqlite_boost mirrors
   the existing `sql_storage_enum_for(type<$Option<auto(TT)>>)` pattern.
   Uses `_::sql_bind(default<TT>)` so caller-module adapters resolve;
   without `_::`, recursion runs in sqlite_boost's module and misses
   `@sql_json`/`@sql_blob`-generated overloads.

2. `emit_json_blob_adapters_for_struct` now unwraps Option<T> before
   adapter codegen. Runtime `sql_bind_to_stmt(Option<T>)` strips the
   Option BEFORE calling user `sql_bind`; registering the adapter for
   `Option<NoteData>` was dead code — actual call lands on `sql_bind(NoteData)`.
   Adapter dedup now naturally collapses bare T and Option<T> in the
   same struct (both key as T).

3. Drop the macro-time Option unwrap in `apply_schema_from` from the
   prior round; the witness is back to `_::sql_bind(default<field_type>)`,
   with rail #1 handling the unwrap uniformly.

Tests:
- test_96_schema_from_partial_body: @sql_json + Option, @sql_blob + Option
  via schema_from path (contract + roundtrip).
- test_64_json_columns: standalone @sql_json + Option, plus dedup edge
  case (bare X + Option<X> in same struct).
- test_65_blob_struct: standalone @sql_blob + Option.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant